package com.zhengqian.boyunvcodemother.common;

import com.zhengqian.boyunvcodemother.exception.BusinessException;
import com.zhengqian.boyunvcodemother.exception.ErrorCode;
import org.springframework.web.bind.annotation.ExceptionHandler;

public class ResultUtils {
    /**
     * 成功
     *
     * @param data 数据
     * @param <T>  数据类型
     * @return 响应
     */
    public static <T> BaseResponse<T> success(T data){
        return new BaseResponse<>(0,data,"ok");
    }
    
    /**
     * 成功 - 专门用于处理可能导致前端精度丢失的Long类型ID
     * 将Long类型的ID转换为String类型返回，避免前端JavaScript处理大整数时的精度丢失问题
     *
     * @param id 可能导致精度丢失的Long类型ID
     * @return 响应
     */
    public static BaseResponse<String> successWithStringId(Long id){
        return new BaseResponse<>(0, id.toString(), "ok");
    }
    /**
     * 失败
     *
     * @param errorCode 错误码
     * @return 响应
     */
    public static BaseResponse<?> error(ErrorCode errorCode) {
        return new BaseResponse<>(errorCode);
    }

    /**
     * 失败
     *
     * @param code    错误码
     * @param message 错误信息
     * @return 响应
     */
    @ExceptionHandler(BusinessException.class)
    public static BaseResponse<?> error(int code, String message) {
        return new BaseResponse<>(code, null, message);
    }

    /**
     * 失败
     *
     * @param errorCode 错误码
     * @return 响应
     */
    @ExceptionHandler(RuntimeException.class)
    public static BaseResponse<?> error(ErrorCode errorCode, String message) {
        return new BaseResponse<>(errorCode.getCode(), null, message);
    }



}
